home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Games / NetHack 3.1.3 / source / include / system.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-01  |  12.8 KB  |  488 lines  |  [TEXT/R*ch]

  1. /*    SCCS Id: @(#)system.h 3.1    92/12/11    */
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3. /* NetHack may be freely redistributed.  See license for details. */
  4.  
  5. #ifndef SYSTEM_H
  6. #define SYSTEM_H
  7.  
  8. #ifndef __GO32__  /* djgpp compiler for msdos */
  9.  
  10. #define E extern
  11.  
  12. /* some old <sys/types.h> may not define off_t and size_t; if your system is
  13.  * one of these, define them by hand below
  14.  */
  15. #if (defined(VMS) && !defined(__GNUC__)) || defined(MAC)
  16. # include <types.h>
  17. #else
  18. # ifndef AMIGA
  19. #  include <sys/types.h>
  20. # endif
  21. #endif
  22.  
  23. #if (defined(MICRO) && !defined(TOS)) || defined(ANCIENT_VAXC)
  24. # if !defined(_SIZE_T) && !defined(__size_t) /* __size_t for CSet/2 */
  25. #  define _SIZE_T
  26. #  if !((defined(MSDOS) || defined(OS2)) && defined(_SIZE_T_DEFINED)) /* MSC 5.1 */
  27. typedef unsigned int    size_t;
  28. #  endif
  29. # endif
  30. #endif    /* MICRO && !TOS */
  31.  
  32. #if defined(__TURBOC__) || defined(MAC)
  33. #include <time.h>    /* time_t is not in <sys/types.h> */
  34. #endif
  35. #if defined(ULTRIX) && !(defined(ULTRIX_PROTO) || defined(NHSTDC))
  36. /* The Ultrix v3.0 <sys/types.h> seems to be very wrong. */
  37. # define time_t long
  38. #endif
  39.  
  40. #if defined(ULTRIX) || defined(VMS)
  41. # define off_t long
  42. #endif
  43. #if defined(AZTEC) || defined(THINKC4) || defined(__TURBOC__)
  44. typedef long    off_t;
  45. #endif
  46.  
  47. #endif /* __GO32__ */
  48.  
  49. /* You may want to change this to fit your system, as this is almost
  50.  * impossible to get right automatically.
  51.  * This is the type of signal handling functions.
  52.  */
  53. #if defined(MOVERLAY)
  54. # define SIG_RET_TYPE void (__cdecl *)(int)
  55. #endif
  56. #ifndef SIG_RET_TYPE
  57. # if defined(NHSTDC) || defined(POSIX_TYPES) || defined(OS2) || defined(__DECC)
  58. #  define SIG_RET_TYPE void (*)()
  59. # endif
  60. #endif
  61. #ifndef SIG_RET_TYPE
  62. # if defined(ULTRIX) || defined(SUNOS4) || defined(SVR3) || defined(SVR4)
  63.     /* SVR3 is defined automatically by some systems */
  64. #  define SIG_RET_TYPE void (*)()
  65. # endif
  66. #endif
  67. #ifndef SIG_RET_TYPE    /* BSD, SIII, SVR2 and earlier, Sun3.5 and earlier */
  68. # define SIG_RET_TYPE int (*)()
  69. #endif
  70.  
  71. #ifndef __GO32__
  72.  
  73. #if defined(BSD) || defined(ULTRIX) || defined(RANDOM)
  74. E long NDECL(random);
  75. # if !defined(SUNOS4) || defined(RANDOM)
  76. E void FDECL(srandom, (unsigned int));
  77. # else
  78. E int FDECL(srandom, (unsigned int));
  79. # endif
  80. #else
  81. E long lrand48();
  82. E void srand48();
  83. #endif /* BSD || ULTRIX || RANDOM */
  84.  
  85. #if !defined(BSD) || defined(ultrix)
  86.             /* real BSD wants all these to return int */
  87. # ifndef MICRO
  88. E void FDECL(exit, (int));
  89. # endif /* MICRO */
  90. /* If flex thinks that we're not __STDC__ it declares free() to return
  91.    int and we die.  We must use __STDC__ instead of NHSTDC because
  92.    the former is naturally what flex tests for. */
  93. # if defined(__STDC__) || !defined(FLEX_SCANNER)
  94. #  ifndef OS2_CSET2
  95. E void FDECL(free, (genericptr_t));
  96. #  endif
  97. # endif
  98. #ifndef    __SASC_60
  99. # if defined(AMIGA) && !defined(AZTEC_50)
  100. E int FDECL(perror, (const char *));
  101. # else
  102. #  if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  103. E void FDECL(perror, (const char *));
  104. #  endif
  105. # endif
  106. #endif
  107. #endif
  108. #ifdef POSIX_TYPES
  109. E void FDECL(qsort, (genericptr_t,size_t,size_t,
  110.              int(*)(const genericptr,const genericptr)));
  111. #else
  112. # if defined(BSD) || defined(ULTRIX) || defined(__TURBOC__)
  113. E  int qsort();
  114. # else
  115. #  if !defined(LATTICE) && !defined(AZTEC_50)
  116. E   void FDECL(qsort, (genericptr_t,size_t,size_t,
  117.                int(*)(const genericptr,const genericptr)));
  118. #  endif
  119. # endif
  120. #endif
  121.  
  122. #ifndef AZTEC_50    /* Already defined in include files */
  123.  
  124. #ifdef ULTRIX
  125. # ifdef ULTRIX_PROTO
  126. E int FDECL(lseek, (int,off_t,int));
  127. # else
  128. E long FDECL(lseek, (int,off_t,int));
  129. # endif
  130.   /* Ultrix 3.0 man page mistakenly says it returns an int. */
  131. E int FDECL(write, (int,char *,int));
  132. E int FDECL(link, (const char *, const char*));
  133. #else
  134. E long FDECL(lseek, (int,long,int));
  135. # ifdef POSIX_TYPES
  136. E int FDECL(write, (int, const void *,unsigned));
  137. # else
  138. E int FDECL(write, (int,genericptr_t,unsigned));
  139. # endif
  140. #endif /* ULTRIX */
  141. #ifndef    __SASC_60
  142. # ifdef OS2_CSET2    /* IBM CSet/2 */
  143. E int FDECL(unlink, (char *));
  144. # else
  145. E int FDECL(unlink, (const char *));
  146. # endif
  147. #endif
  148.  
  149. #if defined(MICRO) || defined (MAC)
  150. E int FDECL(close, (int));
  151. E int FDECL(read, (int,genericptr_t,unsigned int));
  152. #ifndef    __SASC_60
  153. # ifdef MAC
  154. E int FDECL(open, (const char *,int));
  155. # else
  156. E int FDECL(open, (const char *,int,...));
  157. # endif /* MAC */
  158. #endif
  159. E int FDECL(dup2, (int, int));
  160. E int FDECL(setmode, (int,int));
  161. E int NDECL(kbhit);
  162. #ifndef    __SASC_60
  163. E int FDECL(chdir, (char *));
  164. E char *FDECL(getcwd, (char *,int));
  165. #endif
  166. #else
  167. # if defined(ULTRIX)
  168. E int FDECL(close, (int));
  169. # endif
  170. #endif
  171.  
  172. #ifdef ULTRIX
  173. E int FDECL(atoi, (const char *));
  174. E int FDECL(chdir, (const char *));
  175. # ifndef ULTRIX_CC20
  176. E int FDECL(chmod, (const char *,int));
  177. E mode_t FDECL(umask, (int));
  178. # endif
  179. E int FDECL(read, (int,genericptr_t,unsigned));
  180. /* these aren't quite right, but this saves including lots of system files */
  181. E int FDECL(stty, (int,genericptr_t));
  182. E int FDECL(gtty, (int,genericptr_t));
  183. E int FDECL(ioctl, (int, int, char*));
  184. E int FDECL(isatty, (int));    /* 1==yes, 0==no, -1==error */
  185. #include <sys/file.h>
  186. # ifdef ULTRIX_PROTO
  187. E int NDECL(fork);
  188. # else
  189. E long NDECL(fork);
  190. # endif
  191. #endif
  192.  
  193. #ifdef VMS
  194. # ifndef abs
  195. E int FDECL(abs, (int));
  196. # endif
  197. E int FDECL(atexit, (void (*)(void)));
  198. E int FDECL(atoi, (const char *));
  199. E int FDECL(chdir, (const char *));
  200. E int FDECL(chmod, (const char *,int));
  201. E int FDECL(chown, (const char *,unsigned,unsigned));
  202. # ifndef __DECC /* incompatible prototype hidden in <stat.h> */
  203. E int FDECL(umask, (int));
  204. # endif
  205. /* #include <unixio.h> */
  206. E int FDECL(close, (int));
  207. E int VDECL(creat, (const char *,unsigned,...));
  208. E int FDECL(delete, (const char *));
  209. E int FDECL(fstat, ( /*_ int, stat_t * _*/ ));
  210. E int FDECL(isatty, (int));    /* 1==yes, 0==no, -1==error */
  211. E int FDECL(read, (int,genericptr_t,unsigned));
  212. E int VDECL(open, (const char *,int,unsigned,...));
  213. E int FDECL(rename, (const char *,const char *));
  214. E int FDECL(stat, ( /*_ const char *,stat_t * _*/ ));
  215. #endif
  216.  
  217. #endif  /* AZTEC_50 */
  218.  
  219. #ifdef TOS
  220. E int FDECL(creat, (const char *, int));
  221. #endif
  222.  
  223. /* both old & new versions of Ultrix want these, but real BSD does not */
  224. #ifdef ultrix
  225. E void abort();
  226. E void bcopy();
  227. # ifdef ULTRIX
  228. E int FDECL(system, (const char *));
  229. #  ifndef _UNISTD_H_
  230. E int FDECL(execl, (const char *, ...));
  231. #  endif
  232. # endif
  233. #endif
  234. #ifdef MICRO
  235. E void NDECL(abort);
  236. E void FDECL(_exit, (int));
  237. E int FDECL(system, (const char *));
  238. #endif
  239. #ifdef HPUX
  240. E long NDECL(fork);
  241. #endif
  242.  
  243. #if defined(SYSV) || defined(VMS) || defined(MAC) || defined(SUNOS4) || defined(POSIX_TYPES)
  244. # if defined(NHSTDC) || defined(POSIX_TYPES) || (defined(VMS) && !defined(ANCIENT_VAXC))
  245. #  if !(defined(SUNOS4) && defined(__STDC__))    /* Solaris unbundled cc (acc) */
  246. E int FDECL(memcmp, (const void *,const void *,size_t));
  247. E void *FDECL(memcpy, (void *, const void *, size_t));
  248. E void *FDECL(memset, (void *, int, size_t));
  249. #  endif
  250. # else
  251. #  ifndef memcmp    /* some systems seem to macro these back to b*() */
  252. E int memcmp();
  253. #  endif
  254. #  ifndef memcpy
  255. E char *memcpy();
  256. #  endif
  257. #  ifndef memset
  258. E char *memset();
  259. #  endif
  260. # endif
  261. #else
  262. # ifdef HPUX
  263. E int FDECL(memcmp, (char *,char *,int));
  264. E void *FDECL(memcpy, (char *,char *,int));
  265. E void *FDECL(memset, (char*,int,int));
  266. # endif
  267. #endif
  268.  
  269. #if defined(MICRO) && !defined(LATTICE)
  270. # if defined(TOS) && defined(__GNUC__)
  271. E int FDECL(memcmp, (const void *,const void *,size_t));
  272. E void *FDECL(memcpy, (void *,const void *,size_t));
  273. E void *FDECL(memset, (void *,int,size_t));
  274. # else
  275. #  if defined(AZTEC_50) || defined(NHSTDC) || defined(WIN32)
  276. E int  FDECL(memcmp, (const void *, const void *, size_t));
  277. E void *FDECL(memcpy, (void *, const void *, size_t));
  278. E void *FDECL(memset, (void *, int, size_t));
  279. #  else
  280. E int FDECL(memcmp, (char *,char *,unsigned int));
  281. E char *FDECL(memcpy, (char *,char *,unsigned int));
  282. E char *FDECL(memset, (char*,int,int));
  283. #  endif /* AZTEC_50 || NHSTDC */
  284. # endif /* TOS */
  285. #endif /* MICRO */
  286.  
  287. #if defined(BSD) && defined(ultrix)    /* i.e., old versions of Ultrix */
  288. E void sleep();
  289. #endif
  290. #if defined(ULTRIX) || defined(SYSV)
  291. E unsigned sleep();
  292. #endif
  293. #if defined(HPUX)
  294. E unsigned int FDECL(sleep, (unsigned int));
  295. #endif
  296. #ifdef VMS
  297. E int FDECL(sleep, (unsigned));
  298. #endif
  299.  
  300. E char *FDECL(getenv, (const char *));
  301. E char *getlogin();
  302. #ifdef HPUX
  303. E long NDECL(getuid);
  304. E long NDECL(getgid);
  305. E long NDECL(getpid);
  306. #else
  307. # ifdef POSIX_TYPES
  308. E pid_t NDECL(getpid);
  309. E uid_t NDECL(getuid);
  310. E gid_t NDECL(getgid);
  311. # else
  312. E int NDECL(getpid);
  313. # endif
  314. # ifdef VMS
  315. E int NDECL(getppid);
  316. E unsigned NDECL(getuid);
  317. E unsigned NDECL(getgid);
  318. # endif
  319. # if defined(ULTRIX) && !defined(_UNISTD_H_)
  320. E unsigned NDECL(getuid);
  321. E unsigned NDECL(getgid);
  322. E int FDECL(setgid, (int));
  323. E int FDECL(setuid, (int));
  324. # endif
  325. #endif
  326.  
  327. /*# string(s).h #*/
  328. #ifndef _XtIntrinsic_h    /* <X11/Intrinsic.h> #includes <string[s].h> */
  329.  
  330. #if defined(ULTRIX) && defined(__GNUC__)
  331. #include <strings.h>
  332. #else
  333. E char    *FDECL(strcpy, (char *,const char *));
  334. E char    *FDECL(strncpy, (char *,const char *,size_t));
  335. E char    *FDECL(strcat, (char *,const char *));
  336. E char    *FDECL(strncat, (char *,const char *,size_t));
  337. E char    *FDECL(strpbrk, (const char *,const char *));
  338.  
  339. # if defined(SYSV) || defined(MICRO) || defined(MAC) || defined(VMS) || defined(HPUX)
  340. E char    *FDECL(strchr, (const char *,int));
  341. E char    *FDECL(strrchr, (const char *,int));
  342. # else /* BSD */
  343. E char    *FDECL(index, (const char *,int));
  344. E char    *FDECL(rindex, (const char *,int));
  345. # endif
  346.  
  347. E int    FDECL(strcmp, (const char *,const char *));
  348. E int    FDECL(strncmp, (const char *,const char *,size_t));
  349. # if defined(MICRO) || defined(MAC) || defined(VMS) || defined(POSIX_TYPES)
  350. E size_t FDECL(strlen, (const char *));
  351. # else
  352. # ifdef HPUX
  353. E unsigned int    FDECL(strlen, (char *));
  354. #  else
  355. #   if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  356. E int    FDECL(strlen, (const char *));
  357. #   endif
  358. #  endif /* HPUX */
  359. # endif /* MICRO */
  360. #endif /* ULTRIX */
  361.  
  362. #endif    /* !_XtIntrinsic_h_ */
  363.  
  364. #if defined(ULTRIX) && defined(__GNUC__)
  365. E char    *FDECL(index, (const char *,int));
  366. E char    *FDECL(rindex, (const char *,int));
  367. #endif
  368.  
  369. /* Old varieties of BSD have char *sprintf().
  370.  * Newer varieties of BSD have int sprintf() but allow for the old char *.
  371.  * Several varieties of SYSV and PC systems also have int sprintf().
  372.  * If your system doesn't agree with this breakdown, you may want to change
  373.  * this declaration, especially if your machine treats the types differently.
  374.  * If your system defines sprintf, et al, in stdio.h, add to the initial
  375.  * #if.
  376.  */
  377. #if defined(ULTRIX) || defined(__DECC) || defined(__SASC_60) || (defined(SUNOS4) && defined(__STDC__))
  378. #define SPRINTF_PROTO
  379. #endif
  380. #if defined(TOS) || defined(AZTEC_50) || defined(sgi) || defined(__GNUC__)
  381.     /* problem with prototype mismatches */
  382. #define SPRINTF_PROTO
  383. #endif
  384.  
  385. #ifndef SPRINTF_PROTO
  386. # ifdef POSIX_TYPES
  387. E  int FDECL(sprintf, (char *,const char *,...));
  388. # else
  389. #  if defined(BSD) && !defined(DGUX) && !defined(NeXT)
  390. #   define OLD_SPRINTF
  391. E   char *sprintf();
  392. #  else
  393. E   int FDECL(sprintf, (char *,const char *,...));
  394. #  endif
  395. # endif
  396. #endif
  397. #ifdef SPRINTF_PROTO
  398. # undef SPRINTF_PROTO
  399. #endif
  400.  
  401. #ifndef    __SASC_60
  402. #ifdef NEED_VARARGS
  403. # if defined(USE_STDARG) || defined(USE_VARARGS)
  404. #  if !defined(SVR4) && !defined(apollo)
  405. #   if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  406. #    if !(defined(SUNOS4) && defined(__STDC__))    /* Solaris unbundled cc (acc) */
  407. E int FDECL(vsprintf, (char *, const char *, va_list));
  408. E int FDECL(vfprintf, (FILE *, const char *, va_list));
  409. E int FDECL(vprintf, (const char *, va_list));
  410. #    endif
  411. #   endif
  412. #  endif
  413. # else
  414. #  define vprintf    printf
  415. #  define vfprintf    fprintf
  416. #  define vsprintf    sprintf
  417. # endif
  418. #endif /* NEED_VARARGS */
  419. #endif
  420.  
  421. #endif /* __GO32__ */
  422.  
  423. #define Sprintf    (void) sprintf
  424. #define Strcat    (void) strcat
  425. #define Strcpy    (void) strcpy
  426.  
  427. #ifdef NEED_VARARGS
  428. # define Vprintf (void) vprintf
  429. # define Vfprintf (void) vfprintf
  430. # define Vsprintf (void) vsprintf
  431. #endif
  432.  
  433. #ifndef __GO32__
  434.  
  435. #ifdef MICRO
  436. E int FDECL(tgetent, (const char *,const char *));
  437. E int FDECL(tgetnum, (const char *));
  438. E int FDECL(tgetflag, (const char *));
  439. E char *FDECL(tgetstr, (const char *,char **));
  440. E char *FDECL(tgoto, (const char *,int,int));
  441. E void FDECL(tputs, (const char *,int,int (*)()));
  442. #else
  443. E int FDECL(tgetent, (char *,const char *));
  444. E int FDECL(tgetnum, (char *));
  445. E int FDECL(tgetflag, (char *));
  446. E char *FDECL(tgetstr, (char *,char **));
  447. E char *FDECL(tgoto, (char *,int,int));
  448. E void FDECL(tputs, (const char *,int,int (*)()));
  449. #endif
  450.  
  451. #ifdef ALLOC_C
  452. E genericptr_t FDECL(malloc, (size_t));
  453. #endif
  454.  
  455. /* time functions */
  456.  
  457. # ifndef LATTICE
  458. #  if !(defined(ULTRIX_PROTO) && defined(__GNUC__))
  459. E struct tm *FDECL(localtime, (const time_t *));
  460. #  endif
  461. # endif
  462.  
  463. # if defined(ULTRIX) || defined(SYSV) || defined(MICRO) || defined(VMS) || defined(MAC)
  464. E time_t FDECL(time, (time_t *));
  465. # else
  466. E long FDECL(time, (time_t *));
  467. # endif /* ULTRIX */
  468.  
  469. #ifdef VMS
  470.     /* used in makedefs.c, but missing from gcc-vms's <time.h> */
  471. E char *FDECL(ctime, (const time_t *));
  472. #endif
  473.  
  474.  
  475. #ifdef MICRO
  476. # ifdef abs
  477. # undef abs
  478. # endif
  479. E int FDECL(abs, (int));
  480. E int FDECL(atoi, (const char *));
  481. #endif
  482.  
  483. #undef E
  484.  
  485. #endif /* __GO32__ */
  486.  
  487. #endif /* SYSTEM_H */
  488.